/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao.impl;

import dao.UsuarioDao;
import entity.Usuario;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

/**
 *
 * @author USER
 */
public class UsuarioDaoImpl implements UsuarioDao {

    private DriverManagerDataSource dataSource;

    public void setDataSource(DriverManagerDataSource dataSource) {
        this.dataSource = dataSource;
    }

    @Override
    public Integer insertar(Usuario Usuario) {
        Integer result = null;
        Double maxcod = 0.0;
        String conteo = "select max(codusu) from mkt_proyecto_Usuario";
        String sql = "";
        Connection cn = null;
        java.util.Date sysdate = new Date();
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd/MM/yyyy");
        String fechareg = formatoDeFecha.format(sysdate);
        String fechaReg = fechareg.substring(8, 10) + "/" + fechareg.substring(3, 5) + "/" + fechareg.substring(0, 2);
        String fechanac = Usuario.getFecnac().substring(8, 10) + "/" + Usuario.getFecnac().substring(3, 5) + "/" + Usuario.getFecnac().substring(0, 2);

        try {
            cn = dataSource.getConnection();
            Statement st = cn.createStatement();
            sql = "insert into mkt_proyecto_usuario(codusu,nomusu,codsex,numdoc,correo,codsen,numcel,dirusu,fecnac,tarcre,codver,codban,codper,usureg,fecreg) " + "values ('" + Usuario.getCodusu() + "','" + Usuario.getNomusu() + "','" + Usuario.getSexusu() + "'," + Usuario.getNumdoc() + ",'" + Usuario.getCorreo() + "','" + Usuario.getCodsen() + "'," + Usuario.getNumcel() + ",'" + Usuario.getDirusu() + "','" + fechanac + "','" + Usuario.getTarcre() + "','" + Usuario.getCodver() + "','" + Usuario.getCodban() + "','" + Usuario.getCodper() + "','Test1','" + fechaReg + "')";
            int ctos = st.executeUpdate(sql);
            if (ctos == 0) {
                result = 0;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                cn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }
    
    @Override
    public Integer insertarInicial(Usuario Usuario) {
        Integer result = null;
        Double maxcod = 0.0;
        String conteo = "select max(codusu) from mkt_proyecto_Usuario";
        String sql = "";
        Connection cn = null;
        java.util.Date sysdate = new Date();
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd/MM/yyyy");
        String fechareg = formatoDeFecha.format(sysdate);
        String fechaReg = fechareg.substring(8, 10) + "/" + fechareg.substring(3, 5) + "/" + fechareg.substring(0, 2);
        //String fechanac = Usuario.getFecnac().substring(8, 10) + "/" + Usuario.getFecnac().substring(3, 5) + "/" + Usuario.getFecnac().substring(0, 2);

        try {
            cn = dataSource.getConnection();
            Statement st = cn.createStatement();
            sql = "insert into mkt_proyecto_usuario(codusu,nomusu,codsex,numdoc,correo,codsen,numcel,dirusu,fecnac,tarcre,codver,codban,codper,usureg,fecreg) " + "values ('" + Usuario.getCodusu() + "','" + Usuario.getNomusu() + "'," + null + "," + null + "," + null + ",'" + Usuario.getCodsen() + "'," + null + "," + null + "," + null + "," + null + "," + null + ",'" + Usuario.getCodban() + "','" + 2 + "','Test1','" + fechaReg + "')";
            int ctos = st.executeUpdate(sql);
            if (ctos == 0) {
                result = 0;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                cn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }

    @Override
    public void actualizar(Usuario Usuario) {
        String result = null;
        String fechanac = Usuario.getFecnac().substring(8, 10) + "/" + Usuario.getFecnac().substring(3, 5) + "/" + Usuario.getFecnac().substring(0, 2);

        String sql = "update mkt_proyecto_usuario set nomusu='" + Usuario.getNomusu() + "', codsex=" + Usuario.getSexusu() + ",numdoc='" + Usuario.getNumdoc() + "',correo='" + Usuario.getCorreo() + "',codsen=" + Usuario.getCodsen() + ",numcel='" + Usuario.getNumcel() + "',Dirusu='" + Usuario.getDirusu() + "',Fecnac='" + fechanac + "',Tarcre='" + Usuario.getTarcre() + "',Codver='" + Usuario.getCodver() + "',Codban='" + Usuario.getCodban() + "',Codper='" + Usuario.getCodper() + "' where codusu ='" + Usuario.getCodusu()+"'";
        Connection cn = null;
        

        try {
            cn = dataSource.getConnection();
            Statement st = cn.createStatement();
            int ctos = st.executeUpdate(sql);
            if (ctos == 0) {
                result = "0 filas afectadas";
            }
        } catch (SQLException e) {
            result = e.getMessage();
        } finally {
            try {
                cn.close();
            } catch (Exception e) {
                result = e.getMessage();
            }
        }
        System.out.println(result);
    }

    @Override
    public void eliminar(String id) {
        String result = null;
        String sql = "delete from mkt_proyecto_Usuario where codusu='" + id + "'";
        Connection cn = null;

        try {
            cn = dataSource.getConnection();
            Statement st = cn.createStatement();
            int ctos = st.executeUpdate(sql);
            if (ctos == 0) {
                result = "0 filas afectadas";
            }
        } catch (SQLException e) {
            result = e.getMessage();
        } finally {
            try {
                cn.close();
            } catch (Exception e) {
                result = e.getMessage();
            }
        }
        System.out.println(result);
    }

    @Override
    public List<Usuario> buscarTodos() {
        List<Usuario> list = null;
        String sql = "select codusu,nomusu,codsex,numdoc,correo,codsen,numcel,dirusu,fecnac,tarcre,codver,codban,codper,usureg,fecreg from mkt_proyecto_Usuario";
        Connection cn = null;

        try {
            cn = dataSource.getConnection();
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            list = new ArrayList<Usuario>();
            while (rs.next()) {
                Usuario Usuario = new Usuario();
                Usuario.setCodusu(rs.getString(1));
                Usuario.setNomusu(rs.getString(2));
                Usuario.setSexusu(rs.getDouble(3));
                Usuario.setNumdoc(rs.getString(4));
                Usuario.setCorreo(rs.getString(5));
                Usuario.setCodsen(rs.getString(6));
                Usuario.setNumcel(rs.getString(7));
                Usuario.setDirusu(rs.getString(8));
                Usuario.setFecnac(rs.getString(9));
                Usuario.setTarcre(rs.getString(10));
                Usuario.setCodver(rs.getString(11));
                Usuario.setCodper(rs.getDouble(12));
                Usuario.setCodban(rs.getDouble(13));
                Usuario.setUsureg(rs.getString(14));
                Usuario.setFecreg(rs.getString(15));
                list.add(Usuario);
            }
        } catch (SQLException e) {
            list = null;
        } finally {
            try {
                cn.close();
            } catch (Exception e) {
            }
        }
        return list;
    }

    @Override
    public List<Usuario> buscar(Usuario Usuario) {
        List<Usuario> list = null;
        String sql = "select codusu,nomusu,codsex,numdoc,correo,codsen,numcel,dirusu,fecnac,tarcre,codver,codban,codper,usureg,fecreg from mkt_proyecto_Usuario where nomusu like '%" + Usuario.getNomusu() + "%'";
        Connection cn = null;
        try {
            cn = dataSource.getConnection();
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            list = new ArrayList<Usuario>();
            while (rs.next()) {
                Usuario Usuarios = new Usuario();
                Usuarios.setCodusu(rs.getString(1));
                Usuarios.setNomusu(rs.getString(2));
                Usuarios.setSexusu(rs.getDouble(3));
                Usuarios.setNumdoc(rs.getString(4));
                Usuarios.setCorreo(rs.getString(5));
                Usuarios.setCodsen(rs.getString(6));
                Usuarios.setNumcel(rs.getString(7));
                Usuarios.setDirusu(rs.getString(8));
                Usuarios.setFecnac(rs.getString(9));
                Usuarios.setTarcre(rs.getString(10));
                Usuarios.setCodver(rs.getString(11));
                Usuarios.setCodper(rs.getDouble(12));
                Usuarios.setCodban(rs.getDouble(13));
                Usuarios.setUsureg(rs.getString(14));
                Usuarios.setFecreg(rs.getString(15));
                list.add(Usuarios);
            }
        } catch (SQLException e) {
            list = null;
        } finally {
            try {
                cn.close();
            } catch (Exception e) {
            }
        }
        return list;
    }

    @Override
    public Usuario buscar(String id) {
        Usuario Usuario = null;
        String sql = "select codusu,nomusu,codsex,numdoc,correo,codsen,numcel,dirusu,fecnac,tarcre,codver,codban,codper,usureg,fecreg from mkt_proyecto_Usuario where Codusu ='" + id + "'";
        Connection cn = null;


        try {
            cn = dataSource.getConnection();
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if (rs.next()) {
                Usuario = new Usuario();
                Usuario.setCodusu(rs.getString(1));
                Usuario.setNomusu(rs.getString(2));
                Usuario.setSexusu(rs.getDouble(3));
                Usuario.setNumdoc(rs.getString(4));
                Usuario.setCorreo(rs.getString(5));
                Usuario.setCodsen(rs.getString(6));
                Usuario.setNumcel(rs.getString(7));
                Usuario.setDirusu(rs.getString(8));
                Usuario.setFecnac(rs.getString(9));
                Usuario.setTarcre(rs.getString(10));
                Usuario.setCodver(rs.getString(11));
                Usuario.setCodper(rs.getDouble(12));
                Usuario.setCodban(rs.getDouble(13));
                Usuario.setUsureg(rs.getString(14));
                Usuario.setFecreg(rs.getString(15));
            }
        } catch (SQLException e) {
            Usuario = null;
        } finally {
            try {
                cn.close();
            } catch (Exception e) {
            }
        }
        return Usuario;
    }

    @Override
    public List<Usuario> buscarPorNombre(String nombre) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public int login(Usuario usuario) {
        String sql = "select count(*) from mkt_proyecto_usuario where codusu ='" + usuario.getCodusu() + "' and codsen='" + usuario.getCodsen() + "'";
        Connection cn = null;
        int existe=0;
        
        try{
            cn=dataSource.getConnection();
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            if(rs.next()){
                existe=rs.getInt(1);
            }
        }catch(SQLException e){
            existe = 0;
        }finally{
            try{
                cn.close();
            }catch(Exception e){
            }
        }
        
        return existe;
    }
    
    @Override
    public Usuario obtenerPerfil(Usuario usuario) {
        Usuario usuarioper= null;
        String sql = "select b.codper from mkt_proyecto_usuario a, mkt_proyecto_perfil b where a.codusu ='" + usuario.getCodusu() + "' and a.codsen='" + usuario.getCodsen() + "' and a.codper=b.codper";
        Connection cn = null;
        System.out.println(sql);
        
        try{
            cn=dataSource.getConnection();
            Statement st = cn.createStatement();
            ResultSet rs = st.executeQuery(sql);
            usuarioper=new Usuario();
            if(rs.next()){
                usuarioper.setCodper(rs.getDouble(1));
            }
            
        }catch(SQLException e){
            usuarioper = null;
        }finally{
            try{
                cn.close();
            }catch(Exception e){
            }
        }
        return usuarioper;
    }
}
